Data processing systems (such as computers) generally interact with users by requiring input data and by returning corresponding output results. For this purposes several types of user interfaces are available; for example, a Graphical User Interface (GUI) provides stylized elements (such as input boxes, command buttons, and the like), which are aimed at facilitating the inputting of the required data and the outputting of the desired results.
In this context, a critical task is the entering of data in the form of text. Indeed, many applications require the inputting of very lengthy texts (such as in word-processors); other applications instead require the inputting of difficult texts (such as web addresses in browsers used to access the Internet). In any case, the operation of inputting the desired text may be very time consuming; moreover, the same operation is prone to frequent errors.
Some speech-recognition solutions are available to transform the human voice into a sequence of words, which are automatically input to the computer. However, the overwhelming majority of users still use conventional input devices to interact with the computer. Particularly, the texts are commonly input by means of a keyboard. The keyboard consists of a set of keys, which must be pressed to enter corresponding symbols (such as characters). In order to input a desired text (such as a word), the user must type in succession all its characters. This may be a problem when the word is long and/or difficult to spell correctly.
A solution known in the art for facilitating the input of words is the auto-complete technique, which is supported by many software programs (such as word-processors and web browsers). In this case, for each word the user only inputs its first characters (or prefix). The auto-complete facility then tries predicting the actual word that is desired, and it completes the prefix automatically (without the need of inputting the entire word). For example, a type of auto-complete facility known in the art involves displaying a pop-up list of all the possible words that are eligible to complete the prefix, in order to allow the user to select the correct one. Another available approach instead requires continuing typing the characters of the prefix until a single eligible word is found corresponding thereto. The auto-complete facility speeds up the input of text, and strongly reduces the risk of typing errors.
Nevertheless, the solutions known in the art are not completely satisfactory. Indeed, a huge number of eligible words are commonly available for short prefixes (consisting of only a few characters); therefore, a relatively long prefix must be entered before the eligible words reduce to a manageable set (which is practical for their selection). Likewise, it might be necessary to type many characters of the desired word to resolve any ambiguity for the automatic completion of the corresponding prefix.
For example, let us assume that the user starts typing the letter “H”; hundreds of words beginning with this letter exit (from “HABEAS” to “HYSTERICS”), so that no meaningful information can be provided by the auto-complete facility. If the user continues typing the letter “U”, the choice restricts to less eligible words (from “HUB” to “HUZZY”), which are however still too many for taking any decision. Therefore, the process must be reiterated until the required information is obtained; however, this involves typing a number of characters that might be close to the entire desired word. For example, 13 characters are required before being able to identify the word “HUMANITARIANISM” univocally (from the prefix “HUMANITARIANI”).
The above-mentioned drawbacks are particular acute in applications working with a large lexicons wherein a very high number of words can be used (such as word-processors, e-mail clients and SMS editors). Indeed, in this case it is very difficult to predict the word that is being input, because of the huge number of eligible words corresponding to every prefix.